package dao.Ausbilder;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import dao.DaoOberklasse;

import valueobjects.Ausbilder.Ausbilder;
import valueobjects.Ausbilder.AusbilderImpl;
import valueobjects.Zeugnis.Zeugnis;

/**
 * 
 * @author Raphael Berger
 * 
 *         Beschreibung: In dieser Klasse stehen die SQL-Befehle, die die
 *         Datenbank bzw. die Tabellen NICHT �ndern, sondern nur zur Verf�gung
 *         stellen (keine SQL-Update Befehle)
 * 
 */

public class AusbilderDAOImpl extends DaoOberklasse<Ausbilder> implements
		AusbilderDAO {
	@Override
	public List<Ausbilder> holeAlleAusbilder() {
		return this.executeSQLSelect("SELECT * FROM ausbilder;");
	}

	@Override
	public List<Ausbilder> executeSQLSelect(String sql) {
		ResultSet rs = this.connectionDAO.sqlSelectAusfuehren(sql);

		List<Ausbilder> ausbilderliste = new ArrayList<Ausbilder>();
		try {
			while (rs.next()) {
				// Mapping von Resultset zu Objekten.
				Ausbilder ausbilder = new AusbilderImpl();

				ausbilder.setId(rs.getInt("ausbilder_id"));
				ausbilder.setName(rs.getString("name"));
				ausbilder.setVorname(rs.getString("vorname"));
				ausbilder.setFk_betrieb(rs.getInt("fk_betrieb"));
				ausbilder.setEmail(rs.getString("email"));
				ausbilder.setVorwahl(rs.getString("vorwahl"));
				ausbilder.setTelefon(rs.getString("telefon"));
				ausbilder.setDurchwahl(rs.getString("durchwahl"));

				ausbilderliste.add(ausbilder);

			}
		} catch (SQLException e) {
			// Bei Fehlern.
			e.printStackTrace();
		}
		return ausbilderliste;
	}

	@Override
	public void speichereAusbilder(Ausbilder ausbilder) {

		String sql = "INSERT INTO Ausbilder (name, vorname, fk_betrieb, email, vorwahl, telefon, durchwahl) "
				+ "VALUES ('"
				+ ausbilder.getName()
				+ "', '"
				+ ausbilder.getVorname()
				+ "', "
				+ ausbilder.getFk_betrieb()
				+ ", '"
				+ ausbilder.getEmail()
				+ "', '"
				+ ausbilder.getVorwahl()
				+ "', '"
				+ ausbilder.getTelefon()
				+ "', '" + ausbilder.getDurchwahl() + "');";

		this.executeSQL(sql);
	}

	@Override
	public void loescheAusbilder(int id) {
		String sql = "DELETE FROM Ausbilder WHERE ausbilder_id = " + id + ";";

		this.executeSQL(sql);
	}

	@Override
	public void aendereAusbilder(Ausbilder ausbilder) {

		String sql = "UPDATE Ausbilder SET Name = '" + ausbilder.getName()
				+ "',vorname = '" + ausbilder.getVorname() + "', fk_betrieb = "
				+ ausbilder.getFk_betrieb() + ", email = '"
				+ ausbilder.getEmail() + "', vorwahl = '"
				+ ausbilder.getVorwahl() + "', telefon = '"
				+ ausbilder.getTelefon() + "', durchwahl = '"
				+ ausbilder.getDurchwahl() + "' WHERE ausbilder_id = "
				+ ausbilder.getId() + ";";

		this.executeSQL(sql);

	}

}
